#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

//void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
//    int n1 = m ;
//    int n2 = n ;
//    int cur = nums1Size - 1;
//    while (n1 && n2)
//    {
//        if (nums1[n1-1] > nums2[n2-1])
//        {
//            nums1[cur] = nums1[n1-1];
//            n1--;
//            cur--;
//        }
//        else
//        {
//            nums1[cur] = nums2[n2-1];
//            n2--;
//            cur--;
//        }
//    }
//    if (n2 != 0)
//    {
//        while (n2)
//        {
//            nums1[cur] = nums2[n2-1];
//            n2--;
//            cur--;
//        }
//    }
//}

//static int n = 0;
//int main()
//{
//    int arr1[20] = { 1,2,3,0,0,0 };
//    int arr2[] = { 2,5,6 };
//    scanf("%d", &n);
//   /* merge(arr1, 6, 3, arr2, 3, 3);*/
//}


double fact_s(int n)
{
    double f = 1;
    if (n == 1) return 1;
    f = f * fact_s(n - 1);

    return f;
}

int main(void)
{
    int i, n;

    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        printf("%3d! = %.0f\n", i, fact_s(i));
    }
    return 0;
}